﻿/*-----------------------------------------------------------------------
 * <copyright file="IWCFAccounts.cs" company="O-RID">
 *     Copyright (c)2010 O-RID Co.,Ltd.
 * </copyright>
 * <author>Zhang Jun</author>
 * <summary>
 *          IWCFAccounts服务接口定义
 *          StatisticsToolsDB 数据库
 *          作成日：05/21/2010
 *                  08/03/2010 增加 取客户端IP地址
 *                  08/27/2010 增加 查询SV、SSV 对应的组别信息，或是查询某组由那些SV来管理
 *                  09/06/2010 增加 设置TreeView权限树
 *                  09/07/2010 增加 显示所有的Roles，对Roles进行 增删改
 *                  09/19/2010 增加 查询已有用户
 *                  09/20/2010 增加 添加新增用户(权限管理方面)
 *                  10/25/2010 增加 【SV管理页面】 查找已/未分组的SV或SSV信息 、显示SV的详细 分组 信息
 *                  10/28/2010 -- 10/29/2010 
 *                             增加 【SV管理页面】添加组信息、删除组信息
 * </summary>
 *-----------------------------------------------------------------------
 */
namespace Orid.Management.Statistics.Service.OPUnitService.Account
{
    using System.Collections.Generic;
    using System.ServiceModel;
    using Orid.Management.Statistics.Service.OPUnitService.Account.ServiceModel;

    /// <summary>
    /// 注意: 如果更改此处的接口名称 "IWCFAccounts"，也必须更新 Web.config 中对 "IWCFAccounts" 的引用。
    /// </summary>
    [ServiceContract]
    public interface IWCFAccounts
    {
        #region 用户登录
        /// <summary>
        /// Login
        /// 用户登录
        /// </summary>
        /// <param name="loginName">loginName 用户ID </param>
        /// <param name="password"> password 用户密码 </param>
        /// <returns>返回用户的基本信息，和管理权限 LoginDataList </returns>
        [OperationContract]
        LoginDataList Login(string loginName, string password);
        #endregion 用户登录

        #region 登录账号管理 显示当前可登录的信息
        /// <summary>
        /// 登录账号管理
        /// 显示当前可登录的信息
        /// AccountManagementPage页面载入时，
        /// DataGrid使用
        /// </summary>
        /// <returns>返回 AccountManagementDataList 的 LIST 形式</returns>
        [OperationContract]
        List<AccountInforBase> AccountManagement();
        #endregion 登录账号管理 显示当前可登录的信息

        #region 登录账号管理 显示所有用户的信息（可登录和不可登录）
        /// <summary>
        /// 登录账号管理
        /// 显示所有可登录的信息
        /// AccountManagementPage页面，在点击增加按钮时，
        /// 在弹出的窗体上的DataGrid上的TEXT搜索框里使用。
        /// </summary>
        /// <param name="userName">userName 按人名搜索</param>
        /// <returns>返回 AccountManagementDataList 的 List 形式</returns>
        [OperationContract]
        List<AccountInforBase> AccountManagementAll(string userName);
        #endregion 登录账号管理 显示所有用户的信息（可登录和不可登录）

        #region 登录账号管理 将加入到列表中的项目加入表中， 并更新（添加可登录用户）
        /// <summary>
        /// 登录账号 管理
        /// 将加入到列表中的项目加入表中， 并更新（设置可登录用户）
        /// AccountManagementListShowChild页面
        /// </summary>
        /// <param name="haveName">Name of the have.</param>
        /// <param name="haveNoName">Name of the have no.</param>
        /// <returns>返回 AccountManagementDataList 的 LIST 形式</returns>
        [OperationContract]
        List<AccountInforBase> InsertAccount(List<string> haveName, List<string> haveNoName);
        #endregion 登录账号管理 将加入到列表中的项目加入表中， 并更新（添加可登录用户）

        #region 登录账号管理 删除用户， 并更新
        /// <summary>
        /// 登录账号 管理
        /// 删除用户， 并更新
        /// AccountManagementListShowChild页面
        /// </summary>
        /// <param name="accountList">想要删除 的 用户名称列表</param>
        /// <returns>返回 AccountManagementDataList 的 LIST 形式</returns>
        [OperationContract]
        List<AccountInforBase> DeleteAccount(List<string> accountList);
        #endregion #region 登录账号管理 删除用户， 并更新

        #region 取得当前登录用的权限列表(TreeView)
        /// <summary>
        /// 取得当前登录用的权限列表(TreeView)
        /// MainPage.xaml
        /// </summary>
        /// <param name="conditionString">conditionString 形成树的部分条件</param>
        /// <param name="isAllTree">决定是否用条件形成树 TRUE：使用条件 FALSE：不使用</param>
        /// <returns>返回 TreeViewDataList 的 LIST 形式</returns>
        [OperationContract]
        List<TreeViewDataList> TreeViewList(string conditionString, bool isAnyTree);
        #endregion 取得当前登录用的权限列表(TreeView)

        #region 权限分配 显示所有 有登录权限的用户名
        /// <summary>
        /// 权限 分配
        /// 显示所有，有权限的用户名
        /// AccountRolesControl.xaml
        /// </summary>
        /// <returns>返回 AccountRolesDataList 的 LIST 形式</returns>
        [OperationContract]
        List<AccountRolesDataList> AccountRolesList();
        #endregion 权限分配 显示所有，有登录权限的用户名

        #region 权限分配 更新用户的权限列表
        /// <summary>
        /// 权限 分配
        /// 更新用户的权限列表
        /// 更新一条数据
        /// </summary>
        /// <param name="accountID"> accountID 用户ID </param>
        /// <param name="roleID"> roleID 权限ID </param>
        [OperationContract]
        void UpeateOneAccountRoles(string accountID, string roleID);
        #endregion 权限分配 更新用户的权限列表

        #region 现有的 所有权限
        /// <summary>
        /// 现有的 所有权限
        /// 返回【Roles】的所有记录
        /// </summary>
        /// <returns>返回 RolesCombboxDataList 的 LIST 形式</returns>
        [OperationContract]
        List<RolesCombboxDataList> RolesList();
        #endregion 现有的 所有权限

        #region 获取客户端IP地址
        /// <summary>
        /// 获取客户端IP地址
        /// </summary>
        /// <returns></returns>
        /// <value>08/03/2010  add</value>
        [OperationContract]
        string IPAddress();
        #endregion 获取客户端IP地址

        #region 对TreeView权限树 增删改
        /// <summary>
        /// 对TreeView权限树 增删改
        /// </summary>
        /// <param name="treeViewNodeList">The tree view node list.</param>
        /// <param name="operateType">Type of the operate.</param>
        /// <returns></returns>
        /// <value>09/06/2010 add</value>
        [OperationContract]
        string TreeViewNode(TreeViewDataList treeViewNodeList, string operateType);
        #endregion 对TreeView权限树 增删改

        #region 显示 所有的Roles
        /// <summary>
        /// 显示 所有的Roles
        /// </summary>
        /// <returns></returns>
        /// <value>09/07/2010 add</value>
        [OperationContract]
        List<RolesCombboxDataList> AllRolesList();
        #endregion 显示 所有的Roles

        #region 对权限进行 增删改
        /// <summary>
        /// 对权限进行 增删改
        /// </summary>
        /// <param name="rolesInfor">The roles infor.</param>
        /// <param name="operateType">Type of the operate.</param>
        /// <returns></returns>
        /// <value>09/07/2010 add</value>
        [OperationContract]
        string EditRolesList(RolesCombboxDataList rolesInfor, string operateType);
        #endregion 对权限进行 增删改

        #region 【新增用户子窗体】 查询已有用户
        /// <summary>
        /// 查询已有用户
        /// </summary>
        /// <returns></returns>
        /// <value>09/19/2010 Add</value>
        [OperationContract]
        List<AccountData> AccountInforList();
        #endregion  【新增用户子窗体】 查询已有用户

        #region 【新增用户子窗体】 添加新增用户
        /// <summary>
        /// 添加新增用户
        /// </summary>
        /// <returns></returns>
        /// <value>09/20/2010 Add</value>
        [OperationContract]
        string InsertNewAccount(List<AccountData> accountList);
        #endregion  【新增用户子窗体】 添加新增用户

        #region 【SV管理页面】
        /// <summary>
        /// 查找已/未分组的SV或SSV信息
        /// </summary>
        /// <param name="id">用户ID（模糊查询，值可空）</param>
        /// <param name="isGroup">true: 已分组 False: 末分组</param>
        /// <returns>已/未分组的SV或SSV信息</returns>
        /// <value>10/25/2010 add</value>
        [OperationContract]
        List<AccountInforBase> SvGroupUnitList(string id,bool isGroup);

        /// <summary>
        /// 显示SV的详细 分组 信息
        /// </summary>
        /// <param name="id">用户ID</param>
        /// <returns>SV的详细信息</returns>
        /// <value>10/25/2010 add</value>
        [OperationContract]
        List<AccountData> SvDetailedInfoList(string id);

        /// <summary>
        /// 添加组信息
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="userName">用户姓名</param>
        /// <param name="gruopName">添加的组名</param>
        /// <param name="isGrouped">是否已分组 true:已分组  false: 没分组</param>
        /// <returns></returns>
        /// <value>10/28/2010 add</value>
        [OperationContract]
        bool SvGroupAdd(string userId, string userName, string gruopName, bool isGrouped);

        /// <summary>
        /// 删除组信息
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="userName">用户姓名</param>
        /// <param name="gruopName">要删除的组名</param>
        /// <returns></returns>
        /// <value>10/29/2010 add</value>
        [OperationContract]
        bool SvGroupDel(string userId, string userName, string gruopName);

        /// <summary>
        /// 修改当前用户的真实名字
        /// </summary>
        /// <param name="userId">用户ID.</param>
        /// <param name="userName">用户姓名</param>
        /// <returns></returns>
        /// <value>11/18/2010 Add </value>
        [OperationContract]
        bool ReName(string userId, string userName);

        #endregion 【SV管理页面】

    }
}
